滑动窗口
121 买卖股票的最佳时机
def maxProfit(prices: List[int]) -> int:
res = 0
lowest = prices[0]
for i in range(len(prices)):
if prices[i] < lowest:
lowest = prices[i]
else:
res = max(res, prices[i] - lowest)
return res
3 最长的无重复字符子串
时间复杂度:O(n)。滑动窗口技术只需要遍历输入字符串一次。
空间复杂度:O(1)。哈希集合最多只包含 26 个唯一字符,因此空间复杂度为 O(1)。
def lengthOfLongestSubstring(s: str) -> int:
memo = set()
l, r = 0, 0
res = 0
while r < len(s):
if s[r] not in memo:
memo.add(s[r])
r += 1
res = max(res, r - l)
else:
memo.remove(s[l])
l += 1
return res
424 最长重复字符替换